package com.zhike.service.system;

import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zhike.common.model.SystemConfig;

public interface ISystemConfigService extends IService<SystemConfig> {
    /**
     * 根据menu name 获取 value
     * 
     * @param type 配置类型
     * @param key  name
     * @return String
     */
    String getValueByKey(String type, String key);

    Integer getValueByKeyAsInt(String type, String key);

    String getValueByKey(String type, String key, String defaultValue);

    Integer getValueByKeyAsInt(String type, String key, String defaultValue);

    /**
     * 保存或更新配置数据
     * 
     * @param type  配置类型
     * @param name  配置名称
     * @param value 值
     * @return Boolean
     */
    Boolean updateOrSaveValueByName(String type, String name, String value);

    /**
     * 根据 name 获取 value 找不到抛异常
     * 
     * @param type 配置类型
     * @param key  name
     * @return String
     */
    String getValueByKeyException(String type, String key);

    /**
     * 根据name查询数据
     * 
     * @param name name
     * @return Boolean
     */
    Boolean checkName(String key, String name);

    /**
     * 根据key获取配置
     * 
     * @param type 配置类型
     * @param key  key
     * @return List
     */
    List<SystemConfig> getListByKey(String type, String key);

    /**
     * 同步并更新缓存
     */
    boolean syncCache(String type, String key, String val);

    /**
     * 同步并更新所有缓存数据
     */
    void syncCacheAll();

}
